package pl.edu.utp.ga.interfaces;

import java.util.List;

import pl.edu.utp.calculations.Range;

public interface Genotype{
	
	public void generate();
	public void addGene(Gene<?> gene);
	public void setGene(Gene<?> gene, int position);
	public void removeGene(Gene<?> gene);
	public Gene<?> getGene(int position);
	@SuppressWarnings("rawtypes")
	public List<? extends Gene> getGenes();
	@SuppressWarnings("rawtypes")
	public List<Genotype> cross(List<? extends Gene> genes);
	public void mutate();
	public double rate(Calculation calculation);
	public List<Range> getGenesRanges();
	public void setGenesRanges(List<Range> ranges);

}